// ========================================================================= //
// File Name   : SPCE061A.inc												 //	
// Description : SPCE061A register definitions								 //
// Processor   : SPCE061A													 //	
// Revision	   : v1.00, 2005-10-19											 //
// ========================================================================= //

//***************************************************************************//
//	Register definitions													 //
//***************************************************************************//

//	IO port control registers
	.DEFINE		P_IOA_Data				0x7000
	.DEFINE		P_IOA_Buffer			0x7001
	.DEFINE		P_IOA_Dir				0x7002
	.DEFINE		P_IOA_Attrib			0x7003
	.DEFINE		P_IOA_Latch				0x7004

	.DEFINE		P_IOB_Data				0x7005
	.DEFINE		P_IOB_Buffer			0x7006
	.DEFINE		P_IOB_Dir				0x7007
	.DEFINE		P_IOB_Attrib			0x7008

//	Timer control registers
	.DEFINE		P_TimerA_Data			0x700A
	.DEFINE		P_TimerA_Ctrl			0x700B
	.DEFINE		P_TimerB_Data			0x700C
	.DEFINE		P_TimerB_Ctrl			0x700D

//	Timebase control registers
	.DEFINE		P_TimeBase_Setup		0x700E
	.DEFINE		P_Timebase_Setup		0x700E		// Same as P_TimeBase_Setup
	.DEFINE		P_TimeBase_Clear		0x700F
	.DEFINE		P_Timebase_Clear		0x700F		// Same as P_TimeBase_Clear

//	Interrupt control registers
	.DEFINE		P_INT_Ctrl				0x7010
	.DEFINE		P_INT_Clear				0x7011
	.DEFINE		P_INT_Mask				0x702D
	.DEFINE		P_INT_Ctrl_New			0x702D		// Same as P_INT_Mask

//	Analog functions control registers
	.DEFINE		P_ADC					0x7014
	.DEFINE		P_ADC_Ctrl				0x7015
	.DEFINE		P_ADC_MUX_Ctrl			0x702B
	.DEFINE		P_ADC_MUX_Data			0x702C
	.DEFINE		P_ADC_LINEIN_Data		0x702C		// Same as P_ADC_MUX_Data
	.DEFINE		P_ADC_LineIn_Data		0x702C		// Same as P_ADC_MUX_Data

	.DEFINE		P_DAC_Ctrl				0x702A
	.DEFINE		P_DAC1					0x7017
	.DEFINE		P_DAC2					0x7016

//	Serial	functions control registers
	.DEFINE		P_SIO_Data				0x701A
	.DEFINE		P_SIO_Addr_Low			0x701B
	.DEFINE		P_SIO_Addr_Mid			0x701C
	.DEFINE		P_SIO_Addr_High			0x701D
	.DEFINE		P_SIO_Ctrl				0x701E
	.DEFINE		P_SIO_Start				0x701F
	.DEFINE		P_SIO_Stop				0x7020

	.DEFINE		P_UART_Command1			0x7021
	.DEFINE		P_UART_Command2			0x7022
	.DEFINE		P_UART_Data				0x7023
	.DEFINE		P_UART_BaudScalarLow	0x7024
	.DEFINE		P_UART_BaudScalarHigh	0x7025

//	Other control registers
	.DEFINE		P_Feedback				0x7009
	.DEFINE		P_SystemClock			0x7013
	.DEFINE		P_Watchdog_Clear		0x7012
	.DEFINE		P_LVD_Ctrl				0x7019
	.DEFINE		P_Flash_Ctrl			0x7555


//***************************************************************************//
//	Constant definitions													 //
//***************************************************************************//
//	Constants for interrupt
	.DEFINE		C_FIQ_PWM				0x8000		// P_INT_Ctrl
	.DEFINE		C_FIQ_TMA				0x2000		// P_INT_Ctrl
	.DEFINE		C_FIQ_TMB				0x0800		// P_INT_Ctrl
	.DEFINE		C_IRQ0_PWM				0x4000		// P_INT_Ctrl
	.DEFINE		C_IRQ1_TMA				0x1000		// P_INT_Ctrl
	.DEFINE		C_IRQ2_TMB				0x0400		// P_INT_Ctrl
	.DEFINE		C_IRQ3_KEY				0x0080		// P_INT_Ctrl
	.DEFINE		C_IRQ3_EXT1				0x0100		// P_INT_Ctrl
	.DEFINE		C_IRQ3_EXT2				0x0200		// P_INT_Ctrl
	.DEFINE		C_IRQ4_1KHz				0x0010		// P_INT_Ctrl
	.DEFINE		C_IRQ4_2KHz				0x0020		// P_INT_Ctrl
	.DEFINE		C_IRQ4_4KHz				0x0040		// P_INT_Ctrl
	.DEFINE		C_IRQ5_2Hz				0x0004		// P_INT_Ctrl
	.DEFINE		C_IRQ5_4Hz				0x0008		// P_INT_Ctrl
	.DEFINE		C_IRQ6_TMB1				0x0002		// P_INT_Ctrl
	.DEFINE		C_IRQ6_TMB2				0x0001		// P_INT_Ctrl

//	Constants for TimerA & TimerB
	.DEFINE		C_TMA1_FOSC_2			0x0000		// P_TimerA_Ctrl
	.DEFINE		C_TMA1_FOSC_256			0x0001		// P_TimerA_Ctrl
	.DEFINE		C_TMA1_32KHz			0x0002		// P_TimerA_Ctrl
	.DEFINE		C_TMA1_8KHz				0x0003		// P_TimerA_Ctrl
	.DEFINE		C_TMA1_4KHz				0x0004		// P_TimerA_Ctrl
	.DEFINE		C_TMA1_1				0x0005		// P_TimerA_Ctrl
	.DEFINE		C_TMA1_0				0x0006		// P_TimerA_Ctrl
	.DEFINE		C_TMA1_EXT1				0x0007		// P_TimerA_Ctrl
	.DEFINE		C_TMA2_2KHz				0x0000		// P_TimerA_Ctrl
	.DEFINE		C_TMA2_1KHz				0x0008		// P_TimerA_Ctrl
	.DEFINE		C_TMA2_256Hz			0x0010		// P_TimerA_Ctrl
	.DEFINE		C_TMA2_TMB1				0x0018		// P_TimerA_Ctrl
	.DEFINE		C_TMA2_4Hz				0x0020		// P_TimerA_Ctrl
	.DEFINE		C_TMA2_2Hz				0x0028		// P_TimerA_Ctrl
	.DEFINE		C_TMA2_1				0x0030		// P_TimerA_Ctrl
	.DEFINE		C_TMA2_EXT2				0x0038		// P_TimerA_Ctrl
	.DEFINE		C_TMA_PWM_OFF			0x0000		// P_TimerA_Ctrl
	.DEFINE		C_TMA_PWM_D1			0x0040		// P_TimerA_Ctrl
	.DEFINE		C_TMA_PWM_D2			0x0080		// P_TimerA_Ctrl
	.DEFINE		C_TMA_PWM_D3			0x00C0		// P_TimerA_Ctrl
	.DEFINE		C_TMA_PWM_D4			0x0100		// P_TimerA_Ctrl
	.DEFINE		C_TMA_PWM_D5			0x0140		// P_TimerA_Ctrl
	.DEFINE		C_TMA_PWM_D6			0x0180		// P_TimerA_Ctrl
	.DEFINE		C_TMA_PWM_D7			0x01C0		// P_TimerA_Ctrl
	.DEFINE		C_TMA_PWM_D8			0x0200		// P_TimerA_Ctrl
	.DEFINE		C_TMA_PWM_D9			0x0240		// P_TimerA_Ctrl
	.DEFINE		C_TMA_PWM_D10			0x0280		// P_TimerA_Ctrl
	.DEFINE		C_TMA_PWM_D11			0x02C0		// P_TimerA_Ctrl
	.DEFINE		C_TMA_PWM_D12			0x0300		// P_TimerA_Ctrl
	.DEFINE		C_TMA_PWM_D13			0x0340		// P_TimerA_Ctrl
	.DEFINE		C_TMA_PWM_D14			0x0380		// P_TimerA_Ctrl
	.DEFINE		C_TMA_PWM_TA			0x03C0		// P_TimerA_Ctrl
									    
	.DEFINE		C_TMB_FOSC_2			0x0000		// P_TimerB_Ctrl
	.DEFINE		C_TMB_FOSC_256			0x0001		// P_TimerB_Ctrl
	.DEFINE		C_TMB_32KHz				0x0002		// P_TimerB_Ctrl
	.DEFINE		C_TMB_8KHz				0x0003		// P_TimerB_Ctrl
	.DEFINE		C_TMB_4KHz				0x0004		// P_TimerB_Ctrl
	.DEFINE		C_TMB_1					0x0005		// P_TimerB_Ctrl
	.DEFINE		C_TMB_0					0x0006		// P_TimerB_Ctrl
	.DEFINE		C_TMB_EXT1				0x0007		// P_TimerB_Ctrl
	.DEFINE		C_TMB_PWM_OFF			0x0000		// P_TimerB_Ctrl
	.DEFINE		C_TMB_PWM_D1			0x0040		// P_TimerB_Ctrl
	.DEFINE		C_TMB_PWM_D2			0x0080		// P_TimerB_Ctrl
	.DEFINE		C_TMB_PWM_D3			0x00C0		// P_TimerB_Ctrl
	.DEFINE		C_TMB_PWM_D4			0x0100		// P_TimerB_Ctrl
	.DEFINE		C_TMB_PWM_D5			0x0140		// P_TimerB_Ctrl
	.DEFINE		C_TMB_PWM_D6			0x0180		// P_TimerB_Ctrl
	.DEFINE		C_TMB_PWM_D7			0x01C0		// P_TimerB_Ctrl
	.DEFINE		C_TMB_PWM_D8			0x0200		// P_TimerB_Ctrl
	.DEFINE		C_TMB_PWM_D9			0x0240		// P_TimerB_Ctrl
	.DEFINE		C_TMB_PWM_D10			0x0280		// P_TimerB_Ctrl
	.DEFINE		C_TMB_PWM_D11			0x02C0		// P_TimerB_Ctrl
	.DEFINE		C_TMB_PWM_D12			0x0300		// P_TimerB_Ctrl
	.DEFINE		C_TMB_PWM_D13			0x0340		// P_TimerB_Ctrl
	.DEFINE		C_TMB_PWM_D14			0x0380		// P_TimerB_Ctrl
	.DEFINE		C_TMB_PWM_TB			0x03C0		// P_TimerB_Ctrl

//	Constants for TimeBase
	.DEFINE		C_TMB1_8Hz				0x0000		// P_Timebase_Setup
	.DEFINE		C_TMB1_16Hz				0x0001		// P_Timebase_Setup
	.DEFINE		C_TMB1_32Hz				0x0002		// P_Timebase_Setup
	.DEFINE		C_TMB1_64Hz				0x0003		// P_Timebase_Setup
	.DEFINE		C_TMB2_128Hz			0x0000		// P_Timebase_Setup
	.DEFINE		C_TMB2_256Hz			0x0004		// P_Timebase_Setup
	.DEFINE		C_TMB2_512Hz			0x0008		// P_Timebase_Setup
	.DEFINE		C_TMB2_1024Hz			0x000c		// P_Timebase_Setup

//	Constants for system clock
	.DEFINE		C_Fosc_49M				0x0080		// P_SystemClock
	.DEFINE		C_Fosc_40M				0x0060		// P_SystemClock
	.DEFINE		C_Fosc_32M				0x0040		// P_SystemClock
	.DEFINE		C_Fosc_24M				0x0000		// P_SystemClock
	.DEFINE		C_Fosc_20M				0x0020		// P_SystemClock
									    
	.DEFINE		C_Fosc					0x0000		// P_SystemClock
	.DEFINE		C_Fosc_Div_2			0x0001		// P_SystemClock
	.DEFINE		C_Fosc_Div_4			0x0002		// P_SystemClock
	.DEFINE		C_Fosc_Div_8			0x0003		// P_SystemClock
	.DEFINE		C_Fosc_Div_16			0x0004		// P_SystemClock
	.DEFINE		C_Fosc_Div_32			0x0005		// P_SystemClock
	.DEFINE		C_Fosc_Div_64			0x0006		// P_SystemClock
	.DEFINE		C_Sleep					0x0007		// P_SystemClock

	.DEFINE		C_StrongMode			0x0008		// P_SystemClock
	.DEFINE		C_AutoMode				0x0000		// P_SystemClock
	.DEFINE		C_32K_Work				0x0010		// P_SystemClock
	.DEFINE		C_32K_Off				0x0000		// P_SystemClock

//	Constants for ADC & DAC
	.DEFINE		C_ADC_EN				0x0001		// P_ADC_Ctrl
	.DEFINE		C_ADC_DIS				0x0000		// P_ADC_Ctrl
	.DEFINE		C_MIC_RDY				0x8000		// P_ADC_Ctrl
	.DEFINE		C_MIC_EN				0x0000		// P_ADC_Ctrl
	.DEFINE		C_MIC_DIS				0x0002		// P_ADC_Ctrl
	.DEFINE		C_MIC_AGC_EN			0x0000		// P_ADC_Ctrl
	.DEFINE		C_MIC_AGC_DIS			0x0000		// P_ADC_Ctrl
	.DEFINE		C_VEXTREF_EN			0x0080		// P_ADC_Ctrl
	.DEFINE		C_VEXTREF_DIS			0x0000		// P_ADC_Ctrl
	.DEFINE		C_2V_EN					0x0100		// P_ADC_Ctrl
	.DEFINE		C_2V_DIS				0x0000		// P_ADC_Ctrl
	.DEFINE		C_DAC_3mA				0x0040		// P_ADC_Ctrl
	.DEFINE		C_DAC_2mA				0x0000		// P_ADC_Ctrl
										
	.DEFINE		C_ADC_MUX_MIC			0x0000		// P_ADC_MUX_Ctrl
	.DEFINE		C_ADC_MUX_IOA0			0x0001		// P_ADC_MUX_Ctrl
	.DEFINE		C_ADC_MUX_IOA1			0x0002		// P_ADC_MUX_Ctrl
	.DEFINE		C_ADC_MUX_IOA2			0x0003		// P_ADC_MUX_Ctrl
	.DEFINE		C_ADC_MUX_IOA3			0x0004		// P_ADC_MUX_Ctrl
	.DEFINE		C_ADC_MUX_IOA4			0x0005		// P_ADC_MUX_Ctrl
	.DEFINE		C_ADC_MUX_IOA5			0x0006		// P_ADC_MUX_Ctrl
	.DEFINE		C_ADC_MUX_IOA6			0x0007		// P_ADC_MUX_Ctrl
	.DEFINE		C_LINEIN_FAIL			0x4000		// P_ADC_MUX_Ctrl
	.DEFINE		C_LINEIN_RDY			0x8000		// P_ADC_MUX_Ctrl

	.DEFINE		C_DAC1_DIRECT			0x0000		// P_DAC_Ctrl
	.DEFINE		C_DAC1_LATCH_A			0x0080		// P_DAC_Ctrl
	.DEFINE		C_DAC1_LATCH_B			0x0100		// P_DAC_Ctrl
	.DEFINE		C_DAC1_LATCH_AB			0x0180		// P_DAC_Ctrl
	.DEFINE		C_DAC2_DIRECT			0x0000		// P_DAC_Ctrl
	.DEFINE		C_DAC2_LATCH_A			0x0020		// P_DAC_Ctrl
	.DEFINE		C_DAC2_LATCH_B			0x0040		// P_DAC_Ctrl
	.DEFINE		C_DAC2_LATCH_AB			0x0060		// P_DAC_Ctrl
	.DEFINE		C_MIC_DIRECT			0x0000		// P_DAC_Ctrl
	.DEFINE		C_MIC_LATCH_A			0x0008		// P_DAC_Ctrl
	.DEFINE		C_MIC_LATCH_B			0x0010		// P_DAC_Ctrl
	.DEFINE		C_MIC_LATCH_AB			0x0018		// P_DAC_Ctrl
	.DEFINE		C_DAC_DIS				0x0002		// P_DAC_Ctrl

//	Constants for SIO
	.DEFINE		C_SIO_CONFIG			0x0080		// P_SIO_Ctrl
	.DEFINE		C_SIO_READ				0x0000		// P_SIO_Ctrl
	.DEFINE		C_SIO_WRITE				0x0040		// P_SIO_Ctrl
	.DEFINE		C_SIO_CLOCK_32			0x0018		// P_SIO_Ctrl
	.DEFINE		C_SIO_CLOCK_16			0x0000		// P_SIO_Ctrl
	.DEFINE		C_SIO_CLOCK_8			0x0010		// P_SIO_Ctrl
	.DEFINE		C_SIO_ADDR_24			0x0003		// P_SIO_Ctrl
	.DEFINE		C_SIO_ADDR_16			0x0000		// P_SIO_Ctrl
	.DEFINE		C_SIO_ADDR_8			0x0002		// P_SIO_Ctrl
	.DEFINE		C_SIO_ADDR_NO			0x0001		// P_SIO_Ctrl

	.DEFINE		C_SIO_BUSY				0x0080		// P_SIO_Start

//	Constants for UART
	.DEFINE		C_UART_RX_INT			0x0080		// P_UART_Command1
	.DEFINE		C_UART_TX_INT			0x0040		// P_UART_Command1	
	.DEFINE		C_UART_RESET			0x0020		// P_UART_Command1	
	.DEFINE		C_UART_PARITY_EVEN		0x0008		// P_UART_Command1	
	.DEFINE		C_UART_PARITY_ODD		0x0000		// P_UART_Command1	
	.DEFINE		C_UART_PARITY_EN		0x0004		// P_UART_Command1	
	.DEFINE		C_UART_PARITY_DIS		0x0000		// P_UART_Command1	

	.DEFINE		C_UART_RX_RDY			0x0080		// P_UART_Command2
	.DEFINE		C_UART_TX_RDY			0x0040		// P_UART_Command2
	.DEFINE		C_UART_RX_EN			0x0080		// P_UART_Command2
	.DEFINE		C_UART_TX_EN			0x0040		// P_UART_Command2
	.DEFINE		C_UART_PE				0x0008		// P_UART_Command2
	.DEFINE		C_UART_OE				0x0010		// P_UART_Command2
	.DEFINE		C_UART_FE				0x0020		// P_UART_Command2

//	Constants for Feedback
	.DEFINE		C_FEEDBACK1_EN			0x0004		// P_Feedback
	.DEFINE		C_FEEDBACK2_EN			0x0008		// P_Feedback
	.DEFINE		C_IRTX_EN				0x0001		// P_Feedback

//	Constants for LVD
	.DEFINE		C_LVD33V				0x0002		// P_LVD_Ctrl
	.DEFINE		C_LVD29V				0x0001		// P_LVD_Ctrl

//	Other Constants
	.DEFINE		C_WDTCLR				0x0001		// P_Watchdog_Clear
	
///////////////////////////////////////////////////////////////////
//	Old definitions for LVD @'hardware.inc'
	.DEFINE		C_LVD24V				0x0000		// P_LVD_Ctrl
	.DEFINE		C_LVD28V				0x0001		// P_LVD_Ctrl
	.DEFINE		C_LVD32V				0x0002		// P_LVD_Ctrl
	.DEFINE		C_LVD36V				0x0003		// P_LVD_Ctrl

//	Old definitions for TimerA & TimerB @'hardware.inc'
	.DEFINE		C_Fosc_2				0x0000		// P_TimerA_Ctrl
	.DEFINE		C_Fosc_256		    	0x0001		// P_TimerA_Ctrl
	.DEFINE		C_32768Hz				0x0002		// P_TimerA_Ctrl
	.DEFINE		C_8192Hz				0x0003		// P_TimerA_Ctrl
	.DEFINE		C_4096Hz				0x0004		// P_TimerA_Ctrl
	.DEFINE		C_A1					0x0005		// P_TimerA_Ctrl
	.DEFINE		C_A0					0x0006		// P_TimerA_Ctrl
	.DEFINE		C_Ext1					0x0007		// P_TimerA_Ctrl

	.DEFINE		C_2048Hz				0x0000		// P_TimerA_Ctrl, P_TimerB_Ctrl
	.DEFINE		C_1024Hz				0x0008		// P_TimerA_Ctrl, P_TimerB_Ctrl
	.DEFINE		C_256Hz					0x0010		// P_TimerA_Ctrl, P_TimerB_Ctrl
	.DEFINE		C_TMB1Hz				0x0018		// P_TimerA_Ctrl, P_TimerB_Ctrl
	.DEFINE		C_4Hz					0x0020		// P_TimerA_Ctrl, P_TimerB_Ctrl
	.DEFINE		C_2Hz					0x0028		// P_TimerA_Ctrl, P_TimerB_Ctrl
	.DEFINE		C_B1					0x0030		// P_TimerA_Ctrl, P_TimerB_Ctrl
	.DEFINE		C_Ext2					0x0038		// P_TimerA_Ctrl, P_TimerB_Ctrl

	.DEFINE		C_Off					0x0000		// P_TimerA_Ctrl, P_TimerB_Ctrl
	.DEFINE		C_D1					0x0040		// P_TimerA_Ctrl, P_TimerB_Ctrl
	.DEFINE		C_D2					0x0080		// P_TimerA_Ctrl, P_TimerB_Ctrl
	.DEFINE		C_D3					0x00C0		// P_TimerA_Ctrl, P_TimerB_Ctrl
	.DEFINE		C_D4					0x0100		// P_TimerA_Ctrl, P_TimerB_Ctrl
	.DEFINE		C_D5					0x0140		// P_TimerA_Ctrl, P_TimerB_Ctrl
	.DEFINE		C_D6					0x0180		// P_TimerA_Ctrl, P_TimerB_Ctrl
	.DEFINE		C_D7					0x01C0		// P_TimerA_Ctrl, P_TimerB_Ctrl
	.DEFINE		C_D8					0x0200		// P_TimerA_Ctrl, P_TimerB_Ctrl
	.DEFINE		C_D9					0x0240		// P_TimerA_Ctrl, P_TimerB_Ctrl
	.DEFINE		C_D10					0x0280		// P_TimerA_Ctrl, P_TimerB_Ctrl
	.DEFINE		C_D11					0x02C0		// P_TimerA_Ctrl, P_TimerB_Ctrl
	.DEFINE		C_D12					0x0300		// P_TimerA_Ctrl, P_TimerB_Ctrl
	.DEFINE		C_D13					0x0340		// P_TimerA_Ctrl, P_TimerB_Ctrl
	.DEFINE		C_D14					0x0380		// P_TimerA_Ctrl, P_TimerB_Ctrl
	.DEFINE		C_TA_Div_2				0x03C0		// P_TimerA_Ctrl
	.DEFINE		C_TB_Div_2				0x03C0		// P_TimerB_Ctrl

//========================================================================================
// End of SPCE061A.inc
//========================================================================================
